1. Field of the Invention
This invention relates to computer software distribution, and in particular, it relates to a method and system for managing software licenses and reducing unauthorized use of software.
2. Description of the Related Art
By some accounts, the software industry lost $29 billion to piracy in 2003. Software piracy is a serious offence of the intellectual property rights of the software developers and publishers. Software is easy to copy illegally, and therefore steal; thus, systems that reduce or prevent software piracy can save software publishers billions of dollars.
Various anti-piracy schemes have been described or deployed in products. One common approach to reducing software piracy is product activation. It requires users to activate (or enable) their purchased software within a grace period (such as 50 product launches) or have it disabled on their computer. Once the user activates a piece of software (having a unique software id assigned to it) on a particular computer, the activation process creates a globally unique identifier from arbitrary pieces of the computer's hardware (called a hardware hash), connects the computer to a centralized server on the Internet, and registers the (hardware hash, software id)-tuple. If the same software (with the same software id) is installed on another computer and is request to be registered again, the same software id will map to a different hardware hash, thus allowing the server to recognize that the same piece of software was illegally installed on more than one computer. If this is considered software piracy, the server will refuse to enable the software on the other computer, thus preventing the user from committing piracy. Product activation is one of the most popular anti-piracy measures for major software companies, but has various problems. It is inconvenient to legitimate users who upgrade their computer, and requires a large technical support team to handle computer upgrades. It is also not able to disable software on pirates' computers.
Macromedia has implemented an improvement to the traditional product activation algorithm in that it provides a web interface (http://www.macromedia.com/software/activation/) for users to move their license from one computer to another. However, it requires the user to first unregister/uninstall the software from the old computer, and then install it on another computer. This is problematic in the relatively frequent case when the old computer crashes and it is no longer possible to uninstall it from the old computer. Furthermore, many users would just simply forget to uninstall the software from the old computer before formatting it, which also defeats this “uninstall and move-license” scheme.
Some other anti-piracy methods described in patent applications or printed publications are discussed below. Canadian patent application 2267041, entitled Method and System for Protecting a Software Application from Piracy, describes a method using smart cards to authenticate the user (see Abstract). Canadian patent application 2287013, entitled Method of Distributing Piracy Protected Computer Software, describes encoding biometric information into the software before shipping it (see Abstract). Canadian patent application 2335298, entitled Bait Software, describes encoding identifiers into the distributed software and disabling pirated software through updates on a drop dead date. Canadian patent application 2393543, entitled Portable Authorization Device for Authorizing Use of Protected Information and Associated Method, describes using a hardware-based portable authorization device to authenticate the user (see Abstract). Canadian patent application 2483605, entitled Method and Apparatus for Protecting Information and Privacy, describes a sophisticated and complex system for preventing piracy, even against determined hackers. It uses a User Device Descriptive Value (UDDV) that is similar to the hardware hash of product activation and is intended to uniquely identify a computer from its hardware and state. This scheme is inconvenient to legitimate users who upgrade their computer, and requires a large technical support team to handle computer upgrades. Canadian patent application 2429587, entitled Systems and Methods for Preventing Unauthorized Use of Digital Content, describes a variant of product activation, which requires an additional step of downloading a System ID tool. Canadian patent application 2415334, entitled System for Persistently Encrypting Critical Software Data to Control Operation of an Executable Software Program, describes a method that dynamically decrypts parts of the software itself during execution using an activation code that is keyed to the hardware (see Abstract). Canadian patent application 2303049, entitled Method and System of Dynamic Transformation of Encrypted Material, describes an apparatus that is “implemented as a virtually integral part of the operating system that monitors and ‘filter’ all read, write, and open/execute access [sic] to and from the I/O devices” (see Abstract). Canadian patent application 2231978, entitled Bigsoft Brother—Software Method for Tracking and Identifying Illegal Software Piracy, Installation, Copying and Theft of Software, describes a variant of product activation using a hard drive id rather than a basket of hardware identifiers to identify a computer. Canadian patent 1262575 (corresponding to U.S. Pat. No. 4,683,968), entitled System for Preventing Software Piracy Employing Multi-Encrypted Keys and Single Decryption Circuit Modules, describes the use of dongles, small hardware devices that connect to computers and act as authentication keys for particular pieces of software (see Abstract). Canadian patent 1147823, entitled Crypto Microprocessor for Executing Enciphered Programs, proposes a customized microprocessor for decoding an encrypted file on the fly as it is being executed (see Abstract). This patent will not work for the mass distribution of software on computers that the average user has already bought. Many of the above methods make it expensive and complex to distribute the software or inconvenience the legitimate users.